/*
    单调队列-下

    前置知识 : 讲解054-单调队列-上

    除了单调队列最经典的用法之外，在很多问题里单调队列还可以 维持求解答案的可能性
    1）单调队列里的所有对象按照 规定好的单调性来组织
    2）当某个对象从队尾进入单调队列时，
    会从 队头 或者 队尾 依次淘汰单调队列里，对后续求解答案没有帮助 的对象
    3）每个对象一旦从单调队列弹出，可以结算此时这个对象参与的答案，
    随后这个对象 不再参与后续求解答案的过程
    4）其实是 先有对题目的分析！进而发现单调性，然后利用 单调队列的特征 去实现

    注意：
    单调队列可以和很多技巧交叉使用！
    比如：动态规划+单调队列优化，会在【扩展】课程里讲述

    ================================================

    题目1
    和至少为K的最短子数组
    给定一个数组arr，其中的值有可能正、负、0
    给定一个正数k
    返回累加和>=k的所有子数组中，最短的子数组长度
    测试链接 : https://leetcode.cn/problems/shortest-subarray-with-sum-at-least-k/

    注意：本题用到构建前缀和的技巧，不熟悉的同学可以去看，讲解046-构建前缀信息的技巧

    ================================================

    题目2
    满足不等式的最大值
    给你一个数组 points 和一个整数 k
    数组中每个元素都表示二维平面上的点的坐标，并按照横坐标 x 的值从小到大排序
    也就是说 points[i] = [xi, yi]
    并且在 1 <= i < j <= points.length 的前提下，xi < xj 总成立
    请你找出 yi + yj + |xi - xj| 的 最大值，
    其中 |xi - xj| <= k 且 1 <= i < j <= points.length
    题目测试数据保证至少存在一对能够满足 |xi - xj| <= k 的点。
    测试链接 : https://leetcode.cn/problems/max-value-of-equation/

    ================================================

    题目3
    你可以安排的最多任务数目
    给你 n 个任务和 m 个工人。每个任务需要一定的力量值才能完成
    需要的力量值保存在下标从 0 开始的整数数组 tasks 中，
    第i个任务需要 tasks[i] 的力量才能完成
    每个工人的力量值保存在下标从 0 开始的整数数组workers中，
    第j个工人的力量值为 workers[j]
    每个工人只能完成一个任务，且力量值需要大于等于该任务的力量要求值，即workers[j]>=tasks[i]
    除此以外，你还有 pills 个神奇药丸，可以给 一个工人的力量值 增加 strength
    你可以决定给哪些工人使用药丸，但每个工人 最多 只能使用 一片 药丸
    给你下标从 0 开始的整数数组tasks 和 workers 以及两个整数 pills 和 strength
    请你返回 最多 有多少个任务可以被完成。
    测试链接 : https://leetcode.cn/problems/maximum-number-of-tasks-you-can-assign/

    注意：本题大思路用到二分答案法，不熟悉的同学可以去看，讲解051-二分答案法

*/